Enterprises often have several offices or call centers that are located in a plurality of locations. To interconnect all of these sites, enterprise telephony systems have been developed. Enterprise telephony systems consist of a distributed set of voice switches. This distributed hardware platform enables increased reliability and system capacity. Enterprise telephony systems also offer enterprise applications enabled by the integration of computer systems with telephony services. Call detail accounting is one example of such enterprise applications. Call detail accounting enables an enterprise to, for example, track, allocate, and document calls in a database.
While the underlying hardware in enterprise telephony systems is distributed, the software that supports the computer-integrated functionality is typically centralized. The software is generally implemented as a client-server environment in which the participants or clients (distributed telephony users) communicate directly with the server. For example, in a customer relationship management (CRM) application, a customer service representative may create a log about a customer interaction that is meant to be stored on a primary server. In many cases, the data reported by a participant is subsequently provided to another participant. For example, the log mentioned above may be concurrently presented to a customer service supervisor. Centralized computer-integrated features rely not only on a central server's application platform but also on the availability of the network that connects the switches, central server, and application services.
A centralized approach to providing computer-integrated features or functionality has a number of limitations. One problem is that centralized systems have very limited scalability. As more sites are added to an enterprise telephony system, the demand on the central server or logical cluster increases. In order to meet this increased demand, the central server must be upgraded regularly. While upgrading servers can be expensive, the alternative is far worse. If the server is not upgraded, users of the telephony system will experience severely decreased levels of service due to bottlenecks at the server and other problems.
Another problem with centralized systems is that they lack resilience. Computer-integrated features need to be fault tolerant and highly available. When these features rely on a central server, however, they are affected whenever the central server experiences a problem. One possible solution is to use both a primary server and a backup server. When the primary server is working correctly, it handles all incoming requests. The backup server is used only when the primary server confronts a network outage or computing problem. In other words, the backup server is used for failover redundancy. While this configuration is better than one containing a central server alone, recovery of session-based data during a failover transition can still be challenging. If the primary server failed while a user was trying to create session-based data that was meant to be stored on the primary server, the backup server may not be able to capture the call state accurately.
What is needed is a system and method for providing session-based data to participants in a distributed manner that provides high reliability and high availability to a plurality of participants. What is further needed is a system and method that uses peer-to-peer interactions to exchange session-based data.